local lib = require "async-lib"
local t = {}
local inp = io.input()
local out = io.output()
local i

-- write-line handler
local function putline()
	i = i - 1
	-- 如果写完，就结束
	if i == 0 then
		lib.stop() -- finish the main loop
	else  -- write line and prepare next one
		-- 否则继续写
		lib.writeline(out, t[i] .. '\n', putline)
	end
end

local function getline(line)
	-- 这里把读到每一行都存到t中，然后继续读
	if line and line ~= "stop" then  -- not eof
		t[#t + 1] = line -- save line
		lib.readline(inp, getline)
	else -- end of file
		-- 读完毕,开始putline
		i = #t + 1 -- prepare write loop
		putline()
	end
end

lib.readline(inp, getline) -- 在循环之前先预读一行，由于是异步的，所以这里并没有读
lib.runloop() -- 循环开始，上面的读开始开始执行，读完之后触发getline
